using UnityEngine;
using System.Collections;
		
public class Enemytest : MonoBehaviour
{
   private float speed = 4.0F;
   private GameObject last;
   private GameObject previous;
   bool goright = true;
   bool goleft = false;
   bool godown = false;
   float dist;
   float Left;
   float Right;
   bool ativo = true;
	
	int DIRECAO_MOVIMENTO = 1;
   			
   GameObject[] enemy;
			
   void Start () 
   {
	  last = new GameObject();
	  previous = new GameObject();
   }
	
   void Update () 
   {
		//algoritmo a se seguir:
		
		//1- FAZER A LISTA DE INIMIGOS SE MOVER (IR TODA PARA A DIREITA)
		
		//DETECTAR QUANDO ALGUM ITEM DA LISTA BATEU NA DIREITA
		
		//JOGAR TODOS DA LISTA PRA BAIXO
		
		//INVERTER O SENTIDO DE MOVIMENTO
		//(A LISTA CONTINUA SE MEXENDO COMO EM 1, MAS COM O SENTIDO INVERTIDO)
		
		//DETECTAR QUANDO ALGUM ITEM DA LISTA BATEU NA ESQUERDA
		
		//INVERTER O SENTIDO DE MOVIMENTO
		//(A LISTA CONTINUA SE MEXENDO COMO EM 1, MAS COM O SENTIDO INVERTIDO - DIREITA)
		
		//ATIRAR DE VEZ EM QUANDO
		
		//FAZER A DETECÇÂO QUANDO A LISTA ESTIVER MUITO BAIXA, O QUE ACONTECE?
		
		dist = (last.transform.position - Camera.main.transform.position).z;
		Left = Camera.main.ViewportToWorldPoint(new Vector3(0,0,dist)).x + 20;
        Right = Camera.main.ViewportToWorldPoint(new Vector3(1,0,dist)).x - 7;
		
		//Debug.Log(""+);
		
		enemy = GameObject.FindGameObjectsWithTag("Enemy");
		
		for (int count=0; count < enemy.Length; count++)
		{
			//1- FAZER A LISTA DE INIMIGOS SE MOVER (IR TODA PARA A DIREITA)
			enemy[count].transform.Translate(Vector3.left * DIRECAO_MOVIMENTO
				* speed * Time.deltaTime);
			
			//DETECTAR QUANDO ALGUM ITEM DA LISTA BATEU NA DIREITA
			if (enemy[count].transform.position.x < Right)
			{
				DIRECAO_MOVIMENTO *= -1;
			}
				
		}
		
		/*
		for (int count=0; count < enemy.Length; count++)
		{
		     if(count > 0)
		     { 
		         previous = enemy[count-1];	
		     }
			
			
			
		     if(enemy[count].transform.position.x > previous.transform.position.x)
			 {
				 last = enemy[count];
			 } 
				 
		     dist = (last.transform.position - Camera.main.transform.position).z;
		     Left = Camera.main.ViewportToWorldPoint(new Vector3(0,0,dist)).x + 20;
             Right = Camera.main.ViewportToWorldPoint(new Vector3(1,0,dist)).x - 7;
     	}
		
		for(int count = 0; count < enemy.Length; count++)
	 	{
			 if (last.transform.position.x < Right && goright == true)
			 {
			    enemy[count].transform.Translate(Vector3.left * speed * Time.deltaTime);
				goleft = false;
				if(last.transform.position.x == Mathf.Clamp(last.transform.position.x, Left, Right))
				{
					godown = true;
				}
			 } 
			 else if(godown == true)
			 {
			     enemy[count].transform.Translate(0, 0, 0.06f);
				 
                 if(goright == true && last.transform.position.y <= 7f)
                 {
                    godown = false;
					goleft = true;
                 }
				 else if (goleft == true && last.transform.position.y <= 5f)
				 { 
					godown = false;
					goright = true;
				 }
			 }
			 else if (last.transform.position.x > Left && goleft == true)
			 {
			     enemy[count].transform.Translate(Vector3.right * speed * Time.deltaTime);
			     goright = false;
				 if(last.transform.position.x <= -8)
				 {
					godown = true;
				 }
		     }
		}
		*/
	}
}
	